package com.ylr.redis.common.annotation;

import com.ylr.base.common.enums.ResultEnum;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wyw
 * date: 2023-07-27 15:37:19
 * className: LockRun
 * version: 1.0
 * description:
 */
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LockRun {

    /**
     * SpringEL语句
     */
    String spEL() default "";

    /**
     * 是否尝试加锁执行[true-尝试加锁 false-强制加锁]
     */
    boolean isTryLock() default false;

    /**
     * 等待时长（尝试加锁失败，等待时长范围会不断重试，超时抛出异常）
     */
    long waitTime() default 1000;

    /**
     * 加锁时长
     */
    long lockTime() default 1000;

    /**
     * 时间单位
     */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;

    /**
     * 异常提示消息枚举对象
     */
    ResultEnum message() default ResultEnum.SERVICE_FAIL;

}
